type SudokuSolved<T extends number[][][], D extends Digits = Digits> = [
  | (D extends D ? Digits extends T[Minus1<D>][number][number] ? never : `Unresolved in Row ${D}` : never)
  | (D extends D ? Digits extends T[number][ModBy2<D>][ModBy4<D>] ? never : `Unresolved in Col ${D}` : never)
  | (D extends D ? Digits extends T[DivBy3<D>][Minus1<D>][number] ? never : `Unresolved in Subgrid ${D}` : never)
] extends [never] ? true : false;
type Digits = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
type Sections = [0 | 1 | 2, 3 | 4 | 5, 6 | 7 | 8];
type Minus1<D extends Digits> = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8][D];
type DivBy3<D extends Digits> = Sections[[never, 0, 0, 0, 1, 1, 1, 2, 2, 2][D]];
type ModBy2<D extends Digits> =[never, 0, 0, 0, 1, 1, 1, 2, 2, 2][D]
type ModBy4<D extends Digits> =[never, 0, 1, 2, 0, 1, 2, 0, 1, 2][D]
